package com.example.intermingle.contrllor;

import com.example.intermingle.dto.JqGridPageDto;
import com.example.intermingle.dto.RoleEditAndDelDto;
import com.example.intermingle.dto.UserEditDto;
import com.example.intermingle.service.RoleService;
import com.example.intermingle.vo.Role;
import com.example.intermingle.vo.User;
import com.example.intermingle.vo.UserRole;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author 绿松石
 * @version V1.0
 * @Title RoleContrllor
 * @Description
 * @date 2021年09月10日 10:31
 * @since V1.0
 */
@RestController
@RequestMapping( "/role" )
public class RoleContrllor {

    @Autowired
    RoleService roleService;

    /**
     * 查询所有的角色，因为删除和更改用户角色，前端页面没法传递用户id和表单，提前把用户id封装到查询所有的方法
     * @param userId
     * @return
     */
    @RequestMapping( "/selectUserRole" )
    public JqGridPageDto<RoleEditAndDelDto> selectUserRole(Integer userId){
        return roleService.selectUserRole( userId);
    }

    /**
     * 根据用户id来查询用户所拥有的角色
     * @param userId
     * @return
     */
    @RequestMapping( "/selectSingleUserRole" )
    public JqGridPageDto<Role> selectSingleUserRole(Integer userId){
        return roleService.selectSingleUserRole( userId);
    }

    /**
     * 给用户添加角色
     * @param roleEditAndDelDtos
     * @return
     */
    @RequestMapping( "/addUserRole" )
    public JqGridPageDto<Role> addUserRole(@RequestBody List<RoleEditAndDelDto> roleEditAndDelDtos){
        return roleService.addUserRole(roleEditAndDelDtos);
    }

    /**
     * 给用户删除角色
     * @param roleEditAndDelDtos
     * @return
     */
    @RequestMapping( "/delUserRole" )
    public JqGridPageDto<Role> delUserRole(@RequestBody List<RoleEditAndDelDto> roleEditAndDelDtos){
        return roleService.delUserRole( roleEditAndDelDtos);
    }


    /**
     * 查询所有角色信息
     * @param page 页数
     * @param size 条数
     * @param roleId 角色id
     * @param roleName 角色名
     * @param roleAuthority 角色权限
     * @return
     */
    @RequestMapping( "/selectAllRole" )
    public JqGridPageDto<Role> selectAllRole(Integer page, Integer size, Integer roleId, String roleName, String roleAuthority){
        return roleService.selectAllRole(page,size,roleId,roleName,roleAuthority);
    }

    /**
     *
     * 添加角色
     * @param roleName
     * @param roleAuthority
     * @return
     */
    @RequestMapping( "/addRole" )
    public JqGridPageDto<Role> addRole( String roleName,String roleAuthority){
        return  roleService.addRole(roleName,roleAuthority);
    }

    /**
     * 修改角色
     * @param role  用户对象信息
     * @return
     */
    @RequestMapping("/editRole")
    public  JqGridPageDto<Role> editRole(@RequestBody Role role){
        return  roleService.editRole(role);
    }

    /**
     * 删除角色
     * @param roleId 用户id
     * @return
     */
    @RequestMapping("/delRole")
    public  JqGridPageDto<Role> delRole(Integer roleId){
        return  roleService.delRole(roleId);
    }

    /**
     * 导入文件
     * @param request
     * @return
     */
    @RequestMapping("/importRole")
    public JqGridPageDto<Role> importRole(HttpServletRequest  request){
        return roleService.imporRole(request);
    }


    /**
     * 导出文件
     * @param pages 页数
     * @param sizes 条数
     * @param response
     */
    @RequestMapping("/exportRole")
    public void exportRole( String pages,  String sizes, HttpServletResponse response){
        Integer page=Integer.parseInt(pages);
        Integer size=Integer.parseInt(sizes);
        roleService.exportRole(page,size,response);
    }
}
